/*
Copyright: Marcelo S. N. Mancini (Hipreme|MrcSnm), 2018 - 2021
License:   [https://creativecommons.org/licenses/by/4.0/|CC BY-4.0 License].
Authors: Marcelo S. N. Mancini

	Copyright Marcelo S. N. Mancini 2018 - 2021.
Distributed under the CC BY-4.0 License.
   (See accompanying file LICENSE.txt or copy at
	https://creativecommons.org/licenses/by/4.0/
*/

module hip.api.view.scene;
public import hip.api.view.layer;
public import hip.api.data.commons:IHipPreloadable;

interface IScene : IHipPreloadable
{
    void initialize();
    void pushLayer(Layer l);
    void update(float dt);
    void render();
    void dispose();
    void onResize(uint width, uint height);
}

abstract class AScene : IScene
{
    Layer[] layerStack;
    void pushLayer(Layer l)
    {
	    //Intentionally blank for now.
    }


    void preload(){assert(false, "use `mixin Preload;` to implement that function");}
    string[] getAssetsForPreload(){assert(false, "use `mixin Preload;` to implement that function");};
    final string getName(){return this.classinfo.name;}
}